package cn.wolfcode.mongo.service;

import cn.wolfcode.mongo.domain.User;

import java.util.ArrayList;
import java.util.List;

public interface IUserService {

    /**
     * 添加
     * @param user
     */
    void save(User user);

    /**
     * 删除
     * @param id
     */
    void delete(String id);

    /**
     * 修改
     * @param user
     */
    void update(User user);

    /**
     * 查单个
     * @param id
     * @return
     */
    User get(String id);

    /**
     * 查所有
     * @return
     */
    List<User> listAll();

    /**
     * 通过用户名获取用户信息
     * @param name
     * @return
     */
    User findByName(String name);

    /**
     * 通过用户名或者年龄获取用户信息
     * @param name
     * @param age
     * @return
     */
    List<User> findByNameOrAge(String name,Integer age);

    /**
     * 通过用户名和年龄获取用户信息
     * @param name
     * @param age
     * @return
     */
    List<User> findByNameAndAge(String name, Integer age);

    /**
     * 通过年龄范围查找用户信息
     * @param min
     * @param max
     * @return
     */
    List<User> findByAgeBetween(Integer min, Integer max);

    /**
     * 通过小于某个年龄值的条件查询用户信息
     * @param age
     * @return
     */
    List<User> findByAgeLessThan(Integer age);

    /**
     * 通过大于某个年龄值的条件查询用户信息
     * @param age
     * @return
     */
    List<User> findByAgeGreaterThan(Integer age);

    /**
     * 查找用户名为空的用户
     * @return
     */
    List<User> findByNameIsNull();

    /**
     * 模糊查找
     * @param str
     * @return
     */
    List<User> findByNameLike(String str);

    /**
     * 查找名字以某字符串开始的用户
     * @param d
     * @return
     */
    List<User> findByNameStartingWith(String d);

    /**
     * 按照年龄排序
     * @return
     */
    List<User> findByOrderByAge();

    /**
     * 按照年龄倒序排序
     * @return
     */
    List<User> findByOrderByAgeDesc();

    /**
     * 查找名字不是某个值的用户
     * @param str
     * @return
     */
    List<User> findByNameNot(String str);

    /**
     * 查找年龄属于数组中的某一个的全部用户
     * @param ages
     * @return
     */
    List<User> findByAgeIn(List<Integer> ages);
}
